package com.yisu.expressway.api.core.mapper;

import com.yisu.expressway.api.domain.request.orderModule.ChangeOrderPaymentRequest;
import com.yisu.expressway.api.domain.request.orderModule.OrderListRequest;
import com.yisu.expressway.api.domain.request.orderModule.PaySuccessRequest;
import com.yisu.expressway.api.domain.vo.orderModule.OrderStatusNumVo;
import com.yisu.expressway.ewf.entity.OrderMain;

import java.util.List;

public interface OrderMainMapper {
    int deleteByPrimaryKey(Long orderId);

    int insert(OrderMain record);

    int insertSelective(OrderMain record);

    OrderMain selectByPrimaryKey(Long orderId);

    int updateByPrimaryKeySelective(OrderMain record);

    int updateByPrimaryKey(OrderMain record);

    /**
     * 获取当日最大订单号
     * @return
     */
    long getCurrentDayMaxOrderId();

    /**
     * 更改订单支付方式
     * @param changeOrderPaymentRequest 请求参数
     * @return
     */
    boolean changeOrderPayment(ChangeOrderPaymentRequest changeOrderPaymentRequest);

    /**
     * 支付成功回调接口
     * @param paySuccessRequest 支付成功回调参数
     * @return
     */
    boolean paySuccess(PaySuccessRequest paySuccessRequest);

    /**
     * 获取个人订单列表
     * @param orderListRequest 个人订单列表请求参数
     * @return 订单列表
     */
    List<OrderMain> getUserOrderMainList(OrderListRequest orderListRequest);

    /**
     * 通过用户帐号获取订单个各状态数量
     * @param userAccount 用户帐号
     * @return 对象
     */
    OrderStatusNumVo getOrderStatusNumByUserAccount(String userAccount);

    /**
     * 修改订单状态
     * @param orderMain 订单信息
     * @return 成功，失败
     */
    int updateOrderStatus(OrderMain orderMain);

    /**
     * 取消没有支付的订单
     *
     * @param minutes
     * @return
     */
    List<OrderMain> cancelOrderList(Integer minutes);

    void confirmOrder(Integer days);
}